package com.zlsy.es.dianping.base;

import java.util.List;

/**
 * @author zhouliang
 * @date 2020/2/29 0:15
 */
public class R<T> extends AbstractResultMsg<T> {

    public R(T data, String status, Integer errCode, String errMsg) {
        setData(data);
        setStatus(status);
        setErrCode(errCode);
        setErrMsg(errMsg);
    }

    public R(String status, Integer errCode, String errMsg) {
        setStatus(status);
        setErrCode(errCode);
        setErrMsg(errMsg);
    }

    public R(Integer errCode, String errMsg) {
        setStatus(ResultCodeEnum.ERROR.getStatus());
        setErrCode(errCode);
        setErrMsg(errMsg);
    }

    public R() {
        setStatus(ResultCodeEnum.SUCCESS.getStatus());
        setErrCode(ResultCodeEnum.SUCCESS.getErrCode());
        setErrMsg(ResultCodeEnum.SUCCESS.getErrMsg());
    }

    private R(T data) {
        this.data = data;
        setStatus(ResultCodeEnum.SUCCESS.getStatus());
        setErrCode(ResultCodeEnum.SUCCESS.getErrCode());
        setErrMsg(ResultCodeEnum.SUCCESS.getErrMsg());
    }

    public static R success() {
        return new R<>();
    }

    public static <T> R<T> success(T data) {
        return new R<>(data);
    }

    public static <T> R<List<T>> success(List<T> data) {
        return new R<>(data);
    }

    public static R error(String status, Integer errCode, String errMsg) {
        return new R<>(status, errCode, errMsg);
    }

    public static R error(Integer errCode, String errMsg) {
        return new R<>(errCode, errMsg);
    }
}
